package greg1992.lekcja4.gui;

import greg1992.lekcja3.turniej.*;

import javax.swing.JFrame;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.factories.FormFactory;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import java.awt.Font;

public class TurniejGUI extends JFrame {

	/**TODO 
	 * Startujemy z lekcji 3 turniej . 
	 * Funkcja main w pliku TurniejPucharWojta.java
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Turniej turniej;
	private JTextField txtZawodnik1;
	private JTextField txtZawodnik2;
	private JTextField txtZawodnik3;
	private JTextField txtZawodnik4;
	private JTextField txtZawodnik5;
	private JTextField txtZawodnik6;
	private JTextField txtZawodnik7;
	private JTextField txtZawodnik8;
	private JTextField txtPolfinal1;
	private JTextField txtPolfinal2;
	private JTextField txtPolfinal3;
	private JTextField txtPolfinal4;
	private JTextField txtFinal1;
	private JTextField txtFinal2;
	private JTextField txtZwyciesca;
	private JButton btnNastepnaRunda;
	public int numerRundy;
	private JLabel lblAktualnaRunda;
	private JLabel lblStanRundy;


	/**
	 * Launch the application.
	 */


	/**
	 * Create the frame.
	 */
	public TurniejGUI(Turniej turniej) {
		this.turniej = turniej;
		this.numerRundy = 0;
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 817, 521);
		getContentPane().setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.RELATED_GAP_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("4cm"),
				FormFactory.RELATED_GAP_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("4cm"),
				FormFactory.RELATED_GAP_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("4cm"),
				FormFactory.RELATED_GAP_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("4cm"),},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,}));
		
		JLabel lblCwierfinal = new JLabel("Cwiercfinal");
		lblCwierfinal.setHorizontalAlignment(SwingConstants.TRAILING);
		getContentPane().add(lblCwierfinal, "6, 2, center, default");
		
		JLabel lblPolfinal = new JLabel("Polfinal");
		getContentPane().add(lblPolfinal, "10, 2, center, default");
		
		JLabel lblFinal = new JLabel("Final");
		getContentPane().add(lblFinal, "14, 2, center, default");
		
		JLabel lblZwyciesca = new JLabel("Zwyciesca");
		getContentPane().add(lblZwyciesca, "18, 2, center, default");
		
		JLabel lblZawodnik1 = new JLabel("Zawodnik 1");
		getContentPane().add(lblZawodnik1, "2, 4");
		
		txtZawodnik1 = new JTextField(turniej.getZawodnicy1()[0].getDaneZawodnika());
		txtZawodnik1.setEditable(false);
		getContentPane().add(txtZawodnik1, "6, 4");
		txtZawodnik1.setColumns(10);
		
		txtPolfinal1 = new JTextField();
		txtPolfinal1.setEditable(false);
		getContentPane().add(txtPolfinal1, "10, 6, fill, default");
		txtPolfinal1.setColumns(10);
		
		JLabel lblZawodnik2 = new JLabel("Zawodnik 2");
		getContentPane().add(lblZawodnik2, "2, 8");
		
		txtZawodnik2 = new JTextField(turniej.getZawodnicy1()[1].getDaneZawodnika());
		txtZawodnik2.setEditable(false);
		getContentPane().add(txtZawodnik2, "6, 8, fill, default");
		txtZawodnik2.setColumns(10);
		
		txtFinal1 = new JTextField();
		txtFinal1.setEditable(false);
		txtFinal1.setBackground(new Color(173, 255, 47));
		getContentPane().add(txtFinal1, "14, 10, fill, default");
		txtFinal1.setColumns(10);
		
		JLabel lblZawodnik3 = new JLabel("Zawodnik 3");
		getContentPane().add(lblZawodnik3, "2, 12");
		
		txtZawodnik3 = new JTextField(turniej.getZawodnicy2()[0].getDaneZawodnika());
		txtZawodnik3.setEditable(false);
		getContentPane().add(txtZawodnik3, "6, 12, fill, default");
		txtZawodnik3.setColumns(10);
		
		txtPolfinal2 = new JTextField();
		txtPolfinal2.setEditable(false);
		getContentPane().add(txtPolfinal2, "10, 14, fill, default");
		txtPolfinal2.setColumns(10);
		
		JLabel lblZawodnik4 = new JLabel("Zawodnik 4");
		getContentPane().add(lblZawodnik4, "2, 16");
		
		txtZawodnik4 = new JTextField(turniej.getZawodnicy2()[1].getDaneZawodnika());
		txtZawodnik4.setEditable(false);
		getContentPane().add(txtZawodnik4, "6, 16, fill, default");
		txtZawodnik4.setColumns(10);
		
		txtZwyciesca = new JTextField();
		txtZwyciesca.setFont(new Font("Tahoma", Font.BOLD, 11));
		txtZwyciesca.setEditable(false);
		txtZwyciesca.setBackground(Color.ORANGE);
		getContentPane().add(txtZwyciesca, "18, 18, fill, default");
		txtZwyciesca.setColumns(10);
		
		JLabel lblZawodnik5 = new JLabel("Zawodnik 5");
		getContentPane().add(lblZawodnik5, "2, 20");
		
		txtZawodnik5 = new JTextField(turniej.getZawodnicy3()[0].getDaneZawodnika());
		txtZawodnik5.setEditable(false);
		getContentPane().add(txtZawodnik5, "6, 20, fill, default");
		txtZawodnik5.setColumns(10);
		
		txtPolfinal3 = new JTextField();
		txtPolfinal3.setEditable(false);
		getContentPane().add(txtPolfinal3, "10, 22, fill, default");
		txtPolfinal3.setColumns(10);
		
		JLabel lblZawodnik6 = new JLabel("Zawodnik 6");
		getContentPane().add(lblZawodnik6, "2, 24");
		
		txtZawodnik6 = new JTextField(turniej.getZawodnicy3()[1].getDaneZawodnika());
		txtZawodnik6.setEditable(false);
		getContentPane().add(txtZawodnik6, "6, 24, fill, default");
		txtZawodnik6.setColumns(10);
		
		txtFinal2 = new JTextField();
		txtFinal2.setEditable(false);
		txtFinal2.setBackground(new Color(173, 255, 47));
		getContentPane().add(txtFinal2, "14, 26, fill, default");
		txtFinal2.setColumns(10);
		
		JLabel lblZawodnik7 = new JLabel("Zawodnik 7");
		getContentPane().add(lblZawodnik7, "2, 28");
		
		txtZawodnik7 = new JTextField(turniej.getZawodnicy4()[0].getDaneZawodnika());
		txtZawodnik7.setEditable(false);
		getContentPane().add(txtZawodnik7, "6, 28, fill, default");
		txtZawodnik7.setColumns(10);
		
		txtPolfinal4 = new JTextField();
		txtPolfinal4.setEditable(false);
		getContentPane().add(txtPolfinal4, "10, 30, fill, default");
		txtPolfinal4.setColumns(10);
		
		JLabel lblZawodnik8 = new JLabel("Zawodnik 8");
		getContentPane().add(lblZawodnik8, "2, 32");
		
		txtZawodnik8 = new JTextField(turniej.getZawodnicy4()[1].getDaneZawodnika());
		txtZawodnik8.setEditable(false);
		getContentPane().add(txtZawodnik8, "6, 32, fill, default");
		txtZawodnik8.setColumns(10);
		
		btnNastepnaRunda = new JButton("Nastepna Runda");
		getContentPane().add(btnNastepnaRunda, "18, 34, center, center");
		
		lblAktualnaRunda = new JLabel("Aktualna runda:");
		getContentPane().add(lblAktualnaRunda, "6, 36");
		
		lblStanRundy = new JLabel("Cwiercfinal");
		lblStanRundy.setFont(new Font("Tahoma", Font.BOLD, 11));
		getContentPane().add(lblStanRundy, "7, 36, 4, 1");
		//przyciski
		

		txtZawodnik1.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy1()[0] ));
		txtZawodnik2.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy1()[1] ));
		txtZawodnik3.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy2()[0] ));
		txtZawodnik4.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy2()[1] ));
		txtZawodnik5.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy3()[0] ));
		txtZawodnik6.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy3()[1] ));
		txtZawodnik7.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy4()[0] ));
		txtZawodnik8.addMouseListener(zdarzenieMyszki( turniej.getZawodnicy4()[1] ));
		
		
		btnNastepnaRunda.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e){
			numerRundy++;
			nastepnaRunda();
		}
	});
		
		
	}
	
	
	public MouseAdapter zdarzenieMyszki(final Zawodnik zawodnik){
		
		return new MouseAdapter(){
			public void mouseClicked(MouseEvent arg0) {
				if(arg0.getClickCount() == 2){
					ZawodnikGUI zawodnikGui = new ZawodnikGUI(zawodnik);
					zawodnikGui.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
					zawodnikGui.setVisible(true);
					zawodnikGui.setTylkoDoOdczytu(true);
					zawodnikGui.polaDoOdczytu();
				}
			}
		};
	}
	
	
	public void nastepnaRunda(){
		
		if(numerRundy == 1){
			turniej.grajCwiercfinal();
			lblStanRundy.setText("Polfinal");
			
			txtPolfinal1.setText(turniej.mecz1.getZwyciesca().getDaneZawodnika());
			txtPolfinal2.setText(turniej.mecz2.getZwyciesca().getDaneZawodnika());
			txtPolfinal3.setText(turniej.mecz3.getZwyciesca().getDaneZawodnika());
			txtPolfinal4.setText(turniej.mecz4.getZwyciesca().getDaneZawodnika());
			
			//TODO zdarzenia myszki
			txtPolfinal1.addMouseListener(zdarzenieMyszki(turniej.mecz1.getZwyciesca()));
			txtPolfinal2.addMouseListener(zdarzenieMyszki(turniej.mecz2.getZwyciesca()));
			txtPolfinal3.addMouseListener(zdarzenieMyszki(turniej.mecz3.getZwyciesca()));
			txtPolfinal4.addMouseListener(zdarzenieMyszki(turniej.mecz4.getZwyciesca()));
			
		}else if(numerRundy == 2){
			turniej.grajPolfinal();
			lblStanRundy.setText("Final");
			
			txtFinal1.setText(turniej.polfinal1.getZwyciesca().getDaneZawodnika());
			txtFinal2.setText(turniej.polfinal2.getZwyciesca().getDaneZawodnika());
			//TODO zdarzenia myszki
			txtFinal1.addMouseListener(zdarzenieMyszki(turniej.polfinal1.getZwyciesca()));
			txtFinal2.addMouseListener(zdarzenieMyszki(turniej.polfinal2.getZwyciesca()));

		}else if(numerRundy == 3){
			turniej.grajFinal();
			lblStanRundy.setText("Turniej zakonczony!");
			
			txtZwyciesca.setText(turniej.finalowy.getZwyciesca().getDaneZawodnika());
			btnNastepnaRunda.setEnabled(false);
			//TODO zdarzenia myszki
			txtZwyciesca.addMouseListener(zdarzenieMyszki(turniej.finalowy.getZwyciesca()));
		}
		
		
	}
}
